Concurrency abstractions for Concurrent Haskell
نویسندگان
چکیده
In this article we propose a basic set of concurrency abstractions for Concurrent Haskell based on our experiences with various applications. These abstractions serve as templates for patterns recurring in concurrent program development. Especially for threads depending on each other, high-level constructs allow monitoring of a set of child threads and taking actions in case a vital component terminates. The implementation utilises advanced features of the Glasgow Haskell compiler.
منابع مشابه
Modular transactional memory
Software transactional memory has the potential to greatly simplify development of concurrent software, by supporting safe composition of concurrent sharedstate abstractions. However, STM semantics are defined in terms of low-level reads and writes on individual memory locations, so implementations are unable to take advantage of the properties of user-defined abstractions. Consequently, the pe...
متن کاملFour Concurrency Primitives for Haskell
A monad for concurrent programming that is suitable for being built into Haskell is presented. The monad consists of only four primitives with a very simple semantics. A number of examples demonstrate that monads encapsulating other, more sophisticated communication paradigms known from concurrent functional languages such as Concurrent ML, Facile, and Erlang can be naturally and systematically...
متن کاملA Monadic Account of First-class Synchronous Events
These two quotations represent the key ideas behind two major research agendas. The first captures the essence of monadic I/O, which is the fundamental abstraction used to provide input/output and concurrency in the lazy, purely-functional language (Concurrent) Haskell. The second captures the essence of first-class synchronous events, which is the fundamental abstraction used to provide concur...
متن کاملA Language-based Approach to Unifying Events and Threads
This paper presents a language-based technique to unify two seemingly opposite programming models for building massively concurrent network services: the eventdriven model and the multithreaded model. The result is a unified concurrency model providing both thread abstractions and event abstractions. Using this model, each component in an application can be implemented using the appropriate abs...
متن کاملComposable scheduler activations for Haskell
The runtime for a modern, concurrent, garbage collected language like Haskell is like an operating system: sophisticated, complex, performant, but alas very hard to change. If more of the runtime system were in Haskell it would become far more modular and malleable. In this paper we describe a new concurrency design that allows the scheduler for concurrent and parallel programs to be written in...
متن کامل